﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication5._1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            using (Graphics gr = e.Graphics)
            {
                // создаем два объекта в виде прямоугольника
                Rectangle r1 = new Rectangle(new Point(60, 10), new Size(10, 150));
                Rectangle r2 = new Rectangle(new Point(3, 330), new Size(150, 5));

                Region reg1 = new Region(r1);
                Region reg2 = new Region(r2);

                Region rt = reg1.Clone();

                Brush b = new SolidBrush(Color.Red);
                Brush b1 = new SolidBrush(Color.Blue);

                //reg1.Union(reg2);   // первый метод. объединение двух регионов
                //reg1.Intersect(reg2);   //  пересечение двух прямоугольников
                //reg1.Exclude(reg2); // Исключили из 1 региона второй регион
                reg1.Xor(reg2);

                rt.Intersect(reg2);   // метод isvisible
                gr.FillRegion(b, rt);

                if (rt.IsEmpty(gr))  // безконечность
                {
                    MessageBox.Show("Безконечен");
                }
                else
                {
                    MessageBox.Show("Не Безконечен");
                }

                gr.FillRegion(b, reg1);
                //gr.FillRegion(b1, reg2);  // вывод второго региона

                gr.Dispose();
            }
        }
    }
}

/*
 * Region - это множество на плоскости x y.
 * физическая еденица игры - sprite
 * логическая - регион
 * 
 * вызывая методы у регионов - можно понять что есть пересечения этих регионов.
 * логическая операция исключающяя или (xor) 
 * объединение регионов
 * исключение одного из второго. 1 exclude 2.
 * 
*/